
/**
 * 格式化日期为文件名格式
 * @param {Date} date - 日期对象
 * @returns {string} 格式化后的日期字符串，格式为'YYYYMMDD'
 */
function fileFormatDate(date){
  const year = date.getFullYear();
  const month = ('0' + (date.getMonth() + 1)).slice(-2);
  const day = ('0' + date.getDate()).slice(-2);
  return `${year}${month}${day}`;
}

/**
 * 获取指定范围内的所有日期
 * @param {string} start - 开始日期，格式为'YYYY-MM-DD'
 * @param {string} end - 结束日期，格式为'YYYY-MM-DD'
 * @param {string} prefix - 日期字符串前缀
 * @param {string} suffix - 日期字符串后缀
 * @returns {Array} 包含所有日期的数组
 */
exports.getAllDate = function(start,end,prefix,suffix){
  let dateArr = []
  let startArr = start.split('-')
  let endArr = end.split('-')
  let db = new Date()
  db.setUTCFullYear(startArr[0], startArr[1] - 1, startArr[2])
  let de = new Date()
  de.setUTCFullYear(endArr[0], endArr[1] - 1, endArr[2])
  let unixDb = db.getTime()
  let unixDe = de.getTime()
  let stamp
  const oneDay = 24 * 60 * 60 * 1000;
  for (stamp = unixDb; stamp <= unixDe;) {
  dateArr.push(prefix + fileFormatDate(new Date(parseInt(stamp))) + suffix)
  stamp = stamp + oneDay
  }
  return dateArr
}

/**
 * 格式化日期为文件名格式
 * @param {Date} date - 日期对象
 * @returns {string} 格式化后的日期字符串，格式为'YYYYMMDD'
 */
exports.fileFormatDate = function(date) {
  const year = date.getFullYear();
  const month = ('0' + (date.getMonth() + 1)).slice(-2);
  const day = ('0' + date.getDate()).slice(-2);
  return `${year}${month}${day}`;
}


/**
 * 将Date对象格式化为"yyyy-MM-dd HH:mm:ss"的字符串格式
 * @param {Date} date - 需要格式化的Date对象
 * @returns {string} - 格式化后的日期字符串
 */
exports.formatDate = function(date) {
  // 获取年份，用getFullYear确保年份是4位数
  const year = date.getFullYear();
  // 获取月份，加1是因为getMonth返回的是0-11，再通过格式化确保是两位数
  const month = ('0' + (date.getMonth() + 1)).slice(-2);
  // 获取日期，通过格式化确保是两位数
  const day = ('0' + date.getDate()).slice(-2);
  // 获取小时，通过格式化确保是两位数
  const hours = ('0' + date.getHours()).slice(-2);
  // 获取分钟，通过格式化确保是两位数
  const minutes = ('0' + date.getMinutes()).slice(-2);
  // 获取秒数，通过格式化确保是两位数
  const seconds = ('0' + date.getSeconds()).slice(-2);
  // 返回格式化后的日期字符串
  return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
}

/**
 * 根据不同的情况返回对应的JSON数据
 * @param {Object} res - Express的响应对象
 * @param {Object} ret - 返回的数据，可以是未定义、空对象或包含数据的对象
 * @param {number} type - 操作类型，决定返回数据的格式
 * @description
 * 400 = no feedback
 * 500 = no feedback
 * 600 = no feedback
 * 700 = no feedback
 */

exports.jsonWrite = function(res, ret, type) {
  if (typeof ret === 'undefined') {
    res.json({
      code: '201',
      msg: '操作失败',
      type: 'error'
    })
  } else {
    // 定义报文
    if (type == 100){
      if(ret[0] == null ){
        res.json({
          code: '202',
          msg: '账号或密码错误！',
          type: 'error',
          data: ret[0]
        })
      }else{
        res.json({
          code: '200',
          msg: '登陆成功',
          type: 'success',
          data: ret[0]
        })
      }
    }

    if(type == 200){
      if(ret[0] == null ){
        res.json({
          code: '202',
          msg: '操作失败',
          type: 'error',
          data: ret[0]
        })
      }else{
        res.json({
          code: '200',
          msg: '操作成功',
          type: 'success',
          data: ret[0]
        })
      }
    }

    if(type == 300){
      if(ret[0] == null ){
        res.json({
          code: '202',
          msg: '操作失败',
          type: 'error',
          data: ''
        })
      }else{
        res.json({
          code: '200',
          msg: '操作成功',
          type: 'success',
          data: {
            // 获取json长度
            total: Object.keys(ret).length,
            items: ret
          }
        })
      }
    }
    if(type == 400){
      // if(ret[0] == null ){
      //   res.json({
      //     code: '202',
      //     msg: '操作失败',
      //     type: 'error',
      //     data: ''
      //   })
      // }else{
        res.json({
          code: '200',
          msg: '操作成功',
          type: 'success',
          data: {
            // 获取json长度
            total: Object.keys(ret).length,
            address: ret.address,
            items: ret
          }
        })
      // }
    }
    if(type == 500){
        res.json({
          code: 20000,
          msg: '操作成功',
          type: 'success',
        })
    }
    if(type == 600){
      res.json({
        code: '200',
        msg: '操作成功',
        type: 'success',
        total: Object.keys(ret).length,
        data: ret
      })
    }
    if(type == 700){
      res.json({
        code: '200',
        msg: '操作成功',
        type: 'success',
        total: Object.keys(ret).length,
        data: ret
      })
    }

    console.log(ret)

  }
}
